Предыдущий раздел | ОСНОВНЫЕ ОПЕРАТОРЫ АССЕМБЛЕРА | Следующий раздел |
Эти псевдооператоры позволяют программисту влиять на структуру машинной программы и на размещение программы в памяти.
1) %include – псевдооператор, выполняющий включение в исходную программу требуемого текстового файла. Включаемый файл может содержать любые программные операторы, в том числе, макроопределения и описания структур. Операндом оператора %include является имя включаемого файла, заключенное в кавычки. Пример:
%include ‘Video_io.asm’ ; Включение файла Video_io.asm
Встретив оператор %include, транслятор заменяет его на текст «дочернего» исходного файла, указанного в этом операторе.
2) absolute – псевдооператор, задающий виртуальный сегмент данных, а также расположение этого сегмента данных относительно начала сегмента памяти программы. Термин виртуальный сегмент означает, что данный сегмент создается в исходной программе явно, с использованием специально предназначенных для этого псевдооператоров absolute или segment. В отличие от него логический сегмент существует не в исходной, а в машинной программе. Пример:
A1 absolute 80h ; Следующий байт имеет адрес-смещение 80h
Виртуальный сегмент, начинающийся с оператора absolute, закончится тогда, когда в программе начнется следущий виртуальный сегмент. Его начало задается или другим оператором absolute, или оператором segment. Имя сегмента (в примере – A1) не является обязательным.
3) segment – псевдооператор задания виртуального сегмента кода, данных или стека. Тип сегмента code, data или stack задается в качестве параметра оператора segment. Если виртуальному сегменту требуется присвоить какое-то другое имя, то это имя записывается в качестве дополнительного параметра оператора segment. Причем этот параметр записывается первым. Например, следующий оператор присваивает сегменту кода имя “Program”:
segment Program code
Пример оператора, который присваивает виртуальному сегменту данных имя “data3”:
segment data3 data
Виртуальный сегмент, начинающийся с оператора segment, закончится тогда, когда в программе встретится или другой оператор segment, или оператор absolute, или закончится текст программы.
Все одноименные виртуальные сегменты, независимо от того, в каких исходных файлах и фрагментах они находятся, представлены в готовой машинной программе в виде единого логического сегмента.
4) псевдооператор org сообщает транслятору о том, что следующий оператор программы должен быть помещен в выделенный программе сегмент ОП с заданным смещением (параметр оператора org) относительно начала сегмента.
5) global, extern – псевдооператоры, используемые для подготовки связывания раздельно транслировавшихся объектных модулей в единый загрузочный модуль. При этом оператор global используется для описания внешних выходных меток, а оператор extern – внешних входных меток. Внешние выходные метки определены в данном фрагменте исходной программы, а используются в других фрагментах исходной программы. Фрагмент исходной программы – один или несколько исходных файлов программы, соединенных с помощью операторов %include. Внешние входные метки, наоборот, используются в данном фрагменте исходной программы, а определены в других фрагментах. Примеры:
global Label
extern Array
Следует отметить, что в отличие от псевдооператоров short,near, far данные операторы никак не зависят от «расстояния» между операторами программы, а представляют собой лишь указания для транслятора о подготовке вспомогательной информации для редактора связей.
Предыдущий раздел | В начало | Следующий раздел |